package com.example.wendao.model.service;

import androidx.lifecycle.LiveData;
import androidx.paging.DataSource;
import androidx.room.Query;

import com.example.wendao.model.db.dao.NewsDao;
import com.example.wendao.model.db.database.AppDatabase;
import com.example.wendao.model.entity.Forum;
import com.example.wendao.model.entity.News;

import java.util.List;

public class NewsService {

    private NewsDao newsDao;

    public NewsService(){
        newsDao= AppDatabase.getDatabases().getNewsDao();
    }

    //插入新闻
    /*
     * param:新闻
     * return:空
     * */
    public void insert(News news){
        newsDao.insert(news);
    }

    //获得其他新闻
    /*
     * param:空
     * return:分页所有非热门新闻列表的数据源工厂
     * */
    public DataSource.Factory<Integer, News> findOtherAllNews(){return newsDao.findOtherAllNews();}


    public DataSource.Factory<Integer, News> findAllUser(){
        return newsDao.findAllNews();
    }


    //根据点赞数获得当前热度最高的新闻
    /*
     * param:空
     * return:热门新闻列表
     * */
    public LiveData<List<News>> findHeatNews(){return newsDao.findHeatNews();}

    //查询标题带有某字样的新闻
    /*
     * param:标题
     * return:模糊查询得到的分页新闻列表的数据源工厂
     * */
    public DataSource.Factory<Integer, News> findNewsByTitle(String title){ return newsDao.findNewsByTitle(title);}

    //根据新闻id查询新闻
    /*
     * param:新闻id
     * return:新闻
     * */
    public News findNewsById(int id){ return newsDao.findNewsById(id);}


    //按照用户id搜索其名下新闻/*
    //
    // param:用户id
    // return:新闻列表
    // */
    public DataSource.Factory<Integer, News> findAllNewsByAuthorId(int newsauthorid){return newsDao.findAllNewsByAuthorId(newsauthorid);}

    public News findLatestNews(){
        return newsDao.findLatestNews();
    }


    //按照用户id搜索其名下新闻/*
    //
    // param:用户id
    // return:新闻列表(数组)
    // */
    public News[] findAllNewsByAuthorIdInArray(int newsauthorid){
        return newsDao.findAllNewsByAuthorIdInArray(newsauthorid);
    }



    //根据新闻类型查询新闻
    /*
    * param:新闻类型id
    * return:新闻列表
    *
    * */
    public DataSource.Factory<Integer, News> findNewsByNewsType(int newstype){return newsDao.findNewsByNewsType(newstype);}



    //更新新闻
    /*
     * param:新闻
     * return:空
     * */
    public void updateNews(News... news){ newsDao.updateNews(news);}

    //删除新闻
    /*
     * param:新闻
     * return:空
     * */
    public void deleteNews(News... news){newsDao.deleteNews(news);}
    //根据多个帖子id查找帖子（ String  sql）   返回查找到的帖子列表(Forums)
    public DataSource.Factory<Integer, News>  findSomeNewsByNewsIds(List<Integer> sql) {
        return newsDao. findSomeNewsByNewsIds(sql);
    }


}
